/**
 * 权限树节点
 */
export interface PermissionNode {
    children: PermissionNode[];
    id: string;
    label: string;
    parentId: string;
    requestModelId: null;
    returnModelId: null;
    weight: number;
}

//////////////////////////////////////////////
/**
 * 角色信息视图对象
 */
export interface SysRoleVo {
    /**
     * 数据创建者
     */
    createBy?: string;
    /**
     * 数据创建时间
     */
    createTime?: Date;
    /**
     * 删除标志，（0代表存在 2代表删除）
     */
    delFlag?: string;
    /**
     * 角色ID
     */
    id: string;
    /**
     * 身份id列表
     */
    identityIdList?: string[];
    /**
     * 角色权限
     */
    key?: string;
    /**
     * 菜单树选择项是否关联显示，（ 0：父子不互相关联显示 1：父子互相关联显示）
     */
    menuCheckStrictly?: boolean;
    /**
     * 角色名称
     */
    name: string;
    /**
     * 角色排序
     */
    orderNum: number;
    /**
     * 父节点id列表
     */
    parentIdList?: string[];
    /**
     * 角色权限id
     */
    permissionIds?: string[];
    /**
     * 角色权限
     */
    permissions?: SysPermissionVo[];
    /**
     * 备注
     */
    remark?: string;
    /**
     * 子节点id列表
     */
    sonIdList?: string[];
    /**
     * 角色状态，（0正常 1停用）
     */
    status?: string;
    /**
     * 是否超级管理员
     */
    superAdmin?: boolean;
    /**
     * 角色人数
     */
    totalPeople?: number;
    /**
     * 数据更新者
     */
    updateBy?: string;
    /**
     * 数据更新时间
     */
    updateTime?: Date;
    /**
     * 用户是否属于此角色，默认不属于
     */
    userBelong?: boolean;
}

/**
 * 菜单权限视图对象
 */
export interface SysPermissionVo {
    /**
     * 是否缓存
     */
    cached?: boolean;
    /**
     * 子权限
     */
    children?: SysPermissionVo[];
    /**
     * 权限标识编码
     */
    code?: string;
    /**
     * 组件路径
     */
    component?: string;
    componentInfo?: string;
    /**
     * 数据创建者
     */
    createBy?: string;
    /**
     * 数据创建时间
     */
    createTime?: Date;
    /**
     * 是否为外链
     */
    frame?: boolean;
    /**
     * 界面图标
     */
    icon?: string;
    /**
     * 权限ID
     */
    id?: number;
    innerLink?: boolean;
    menuFrame?: boolean;
    /**
     * 后端请求方法
     */
    method?: string;
    /**
     * 权限名称
     */
    name?: string;
    /**
     * 显示顺序
     */
    orderNum?: number;
    /**
     * 父权限ID
     */
    parentId?: string;
    /**
     * 父权限名称
     */
    parentName?: string;
    parentView?: boolean;
    /**
     * 路由地址
     */
    path?: string;
    /**
     * 路由参数
     */
    queryParam?: string;
    /**
     * 备注
     */
    remark?: string;
    /**
     * 请求的模型主键
     */
    requestModelId?: string;
    /**
     * 后端请求路径
     */
    requestPath?: string;
    /**
     * 返回的模型主键
     */
    returnModelId?: string;
    routeName?: string;
    routerPath?: string;
    /**
     * 菜单状态，（0正常 1停用）
     */
    status?: string;
    /**
     * 权限类型，（D目录 M菜单 B按钮 O其他）
     */
    type?: string;
    /**
     * 数据更新者
     */
    updateBy?: string;
    /**
     * 数据更新时间
     */
    updateTime?: Date;
    /**
     * 显示状态
     */
    visible?: boolean;
}

///////////////////////////////////////////////////////
export interface SysModelVo {
    /**
     * 实体描述
     */
    description?: string;
    editableFields?: DataFieldFilter;
    /**
     * 实体所包含的字段
     */
    fields?: SysFieldVo[];
    /**
     * 类全名
     */
    fullClassName?: string;
    /**
     * 实体id
     */
    id?: string;
    /**
     * 实体名称
     */
    name?: string;
    visibleFields?: DataFieldFilter;
}

/**
 * 角色可以编辑的字段
 */
export interface DataFieldFilter {
    fields?: string[];
    modelId?: string;
}

/**
 * 字段信息视图对象
 */
export interface SysFieldVo {
    /**
     * 字段描述
     */
    description?: string;
    /**
     * 字段显示名称
     */
    displayName?: string;
    /**
     * 字段id
     */
    id?: string;
    /**
     * model的id
     */
    modelId?: string;
    /**
     * 字段名称
     */
    name?: string;
    /**
     * 字段类型
     */
    type?: string;
}
